package Thread;



//1.创建一个自己的类，继承这个Thread
//为什么这个Thread可以直接用不需要导包？因为java标准库中，有一个特殊的包java.long，默认导入的
//为什么类前面没有public？因为一个.java文件中只能有一个public类
//这个类如果没有public包级作用于，就是只能在当前包里被其他的类使用
class MyThread extends Thread{
    public MyThread(Runnable helloThread, String name) {

    }

    @Override//不写这个注解也可以，我们写上是因为方便编译器对代码进行自动检查
    public void run() {
        super.run();//重写run方法（重写本质是能够对现有的类进行扩展），run方法就是该线程的入口方法，类似于main是java进程的入口方法
        //线程创建好了之后，会被jvm自动执行调用
        System.out.println("hello world");
    }
}
public class ThreadDemo1 {
    //引入线程之后，代码中就可以同时具备多个执行流了!
    public static void main(String[] args) {
        //2.根据刚才都是类，创建出实例（线程实例才是真正的线程）
        //MyThread t=new MyThread();
        MyThread t=new MyThread(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    System.out.println("hello thread");
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                }
            }
        }, "这是我的线程");
        //3.调用thread的start方法，才会真正调用系统api，在系统内核中创建出线程
        t.start();
    }
}
